// import {parse_lyric} from './parse_lyric.js'
// import {name, age, sayHello} from './foo.js'
// console.log(name, age)
let flag = true
if(flag){
    // 不允许在逻辑代码中编写声明语法，只能写道js代码顶层

//    import {name, age, sayHello} from './foo.js'
// import 函数
const importPromise = import('./foo.js')
importPromise.then((res) => {
    console.log(res.name,res.age)
})
console.log('-------------')

}


// es module 的解析流程
// ES Module是如何被浏览器解析并且让模块之间可以相互引用的呢?
// https://hacks.mozilla.org/2018/03/es-modules-a-cartoon-deep-dive/
// ES Module的解析过程可以划分为三个阶段:
// 口阶段一: 构建(Construction)，根据地址查找js文件，并且下载，将其解析成模块记录(Module Record);
// 口阶段二:实例化(lnstantiation)，对模块记录进行实例化，并且分配内存空间，解析模块的导入和导出语句，把模块指向对应的内存地址。
// 口阶段三: 运行(Evaluation)，运行代码，计算值，并且将值填充到内存地址中;